Bestsoft ID:
Password:  


C

Start writting your Operating System now in C by Downloading Bestsoft Space IDE Download

Binary Search Example
main.c


#include "bestsoft.h"

int main
(struct multiboot *mboot_ptr)
{

        clear
();
        int array[10];
        int i, j, num, temp, keynum;
        int low, mid, high;

       num = 5;
      array[0]=23;
      array[1]=90;
      array[2]=56;
      array[3]=15;
      array[4]=58;

         /*  Bubble sorting begins */
             for (i = 0; i < num; i++)
        {
                for (j = 0; j < (num - i - 1); j++)
                {
                        if (array[j] > array[j + 1])
                        {
                                temp = array[j];
                                array[j] = array[j + 1];
                                array[j + 1] = temp;
                        }
                }
        }


        write
("Sorted array is:\n");

        for (i = 0; i < num; i++)
        {
               write
("\n");
               write_dec
(array[i]);
        }

       //Element to find
       
       keynum=90;

        /*  Binary searching begins */
        low = 1;
        high = num;
        do
        {
                mid = (low + high) / 2;
                if 
(keynum < array[mid])
                        high = mid - 1;
                else if 
(keynum > array[mid])
                        low = mid + 1;
        } while (keynum != array[mid] && low <= high);
                if (keynum == array[mid])
        {
               write
("\nSEARCH SUCCESSFUL \n");
                write
("Number Located at position: ");
                write_dec(mid+1);
        }
        else
        {
                write
("\nSEARCH FAILED! \nNumber not found.");
        }
    
      
       return 0;
}

void  write_dec
(u32int n)
{
    if (n == 0)
    {
        monitor_put
('0');
        return;
    }

    s32int acc = n;
    Char c[32];
    int i = 0;
    while 
(acc > 0)
    {
        c[i] = '0' + acc%10;
        acc /= 10;
        i++;
    }
    c[i] = 0;

    Char c2[32];
    c2[i--] = 0;
    int j = 0;
    while(i >= 0)
    {
        c2[i--] = c[j++];
    }
    write
(c2);
}